package edu.pucp.dp.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;

//TODO: LOGIN como punto inicio
public class Fapsw implements EntryPoint {
	private FlexTable flexTable;
	private Label lblUser;
	private TextBox txtUser;
	private Label lblPassword;
	private TextBox txtPassword;
	private HorizontalPanel horizontalPanel;
	private Button btnLogin;
	private Button btnReset;
	private Label lblMsgError;
	private LogInServiceAsync logInService = GWT.create(LogInService.class);
	@Override
	public void onModuleLoad() {
		// TODO Auto-generated method stub
		RootPanel root = RootPanel.get(); 
		root.setSize("100%", "100%");
		
		flexTable = new FlexTable();
		root.add(flexTable, 185, 165);
		flexTable.setSize("285px", "174px");
		
		lblUser = new Label("Usuario :");
		flexTable.setWidget(0, 0, lblUser);
		flexTable.getCellFormatter().setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE);
		
		txtUser = new TextBox();
		flexTable.setWidget(0, 1, txtUser);
		
		lblPassword = new Label("Password :");
		flexTable.setWidget(1, 0, lblPassword);
		
		txtPassword = new TextBox();
		flexTable.setWidget(1, 1, txtPassword);
		
		lblMsgError = new Label("");
		lblMsgError.setVisible(false);
		flexTable.setWidget(2, 1, lblMsgError);
		
		horizontalPanel = new HorizontalPanel();
		flexTable.setWidget(3, 1, horizontalPanel);
		
		btnLogin = new Button("Login");
		horizontalPanel.add(btnLogin);
		
		btnReset = new Button("Reset");
		horizontalPanel.add(btnReset);
		
		btnLogin.addClickHandler( new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				validarUsuario();
			}
		});
	}
	
	private void validarUsuario() {
		// TODO Hacer validaciones y generar el nuevo menu y mensajes de error y lbl para botar texto
		//		:exito: entonces dependiendo del usuario se genera el nuevo panel principal por perfil

		AsyncCallback< InfoPerfilView > callback = new AsyncCallback<InfoPerfilView>() {
			@Override
			public void onFailure(Throwable caught) {
				// TODO Auto-generated method stub
				lblMsgError.setText("Pinxito de bb con frio");
			}
			@Override
			public void onSuccess(InfoPerfilView result) {
				// TODO linkeada con permisos hechos
				Window.alert( result.getPerfil() + "" );
			}
		};
		UsuarioView usr = new UsuarioView( txtUser.getText() , txtPassword.getText() );
		logInService.getInfoPerfil(usr, callback); 
	}
}
